package com.yh.correct.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.yh.correct.dao.IGroupGuardianMapper;
import com.yh.correct.dao.IGroupJudicialMapper;
import com.yh.correct.model.GroupGuardian;
import com.yh.correct.model.GroupJudicial;
import com.yh.correct.model.Guardian;
import com.yh.correct.model.Page;
import com.yh.correct.model.Personnel;
import com.yh.correct.service.IGroupService;
/**
 * 帮教小组 业务层 实现类
 * @author Administrator
 */
@Service
public class GroupServiceImpl implements IGroupService {

    private static Logger logger = LogManager.getLogger(GroupServiceImpl.class);
	
	@Autowired
	private IGroupJudicialMapper groupJudicialMapper;
	
	@Autowired
	private IGroupGuardianMapper groupGuardianMapper;
	/**
	 * 根据受教人id 查询其帮教小组
	 */
	@Override
	public List<Object> getGroups(int id) {
		logger.debug("根据受教人id 查询其其帮教小组的信息"+id);
		List<Object> list=new ArrayList<Object>();
		List<Object> gjList=groupJudicialMapper.getGroupJudicial(id);
		List<Object> ggList=groupGuardianMapper.getGroupGuardian(id);
		list.add(gjList);
		list.add(ggList);
		return list;
	}
	/**
	 * 根据矫正人员的名字和证件号码模糊查询匹配的受教人及对应的监督人数
	 */
	@Override
	public Page queryLikeCorrectedPersons(Map<String, Object> cond) {
		logger.debug("根据矫正人员的名字和证件号码模糊查询匹配的受教人及对应的监督人数"+cond);
		Page page=new Page();
		//根据条件查询符合的用户列表记录总数，赋值给page的totalNum变量
		page.setTotalNum(groupJudicialMapper.getLikeCorrectedPersonsCount(cond));
		//从请求参数中获取每页大小
		int pageSize = Integer.parseInt(String.valueOf(cond.get("pageSize")));
		page.setPageSize(pageSize);
		//从请求参数中获取当前页码
		int curPageNum = Integer.parseInt(String.valueOf(cond.get("pageNum")));
		page.setCurPageNum(curPageNum);
		//动态计算总页数(总记录数 除以 每页大小，加上  总页数 求余 每页大小，如果余数不为0，则 加 1，否则 加 0 )
		page.setTotalPage(page.getTotalNum()/pageSize+(page.getTotalNum()%pageSize==0?0:1));
		//根据条件查询符合的用户列表记录，赋值给page的result变量
		page.setResult(groupJudicialMapper.getLikeCorrectedPersons(cond));
		return page;
	}
	/**
	 * 根据监督人id查询矫正人员
	 */
	@Override
	public List<Object> getCorrectedPersonsByPId(Personnel personnel) {
		logger.debug("根据监督人id查询矫正人员"+personnel);
		return groupJudicialMapper.getCorrectedPersonsByPId(personnel);
	}
	
	/**
	 * 根据id查询监护人信息
	 */
	@Override
	public List<Object> getGuardian(Guardian guandian) {
		logger.debug("根据id查询监护人信息"+guandian);
		return groupGuardianMapper.getGuardian(guandian);
	}
	
	/**
	 * 根据cid更新帮教小组
	 * @throws Exception 
	 */
	@Override
	@Transactional
	public void updateGroups(int cid,List<GroupJudicial> pList,List<GroupGuardian> gList) throws Exception {
		logger.debug("根据cid更新帮教小组"+cid+pList+gList);
		//删除帮教小组（矫正人与监督人）中旧信息
		groupJudicialMapper.delGroupJudicial(cid);
		//删除帮教小组（矫正人与监护人）中旧信息
		groupGuardianMapper.delGroupGuardian(cid);
		
		/*if(true){
			throw new Exception();
		}*/
		
		if(pList.size()!=0){
			//帮教小组（矫正人与监督人）增加新信息
			groupJudicialMapper.addGroupJudicial(pList);
		}
		if(gList.size()!=0){
			//帮教小组（矫正人与监护人）增加新信息
			groupGuardianMapper.addGroupGuardian(gList);
		}
		
	}

}
